package com.xinnet.mms.empcustomrelation.dao;

import java.sql.SQLException;
import java.util.List;

import org.springframework.stereotype.Repository;

import com.xinnet.mms.entity.CustomStateHist;
import com.xinnet.mms.entity.Customer;
import com.xinnet.mms.entity.EmpCustomRelation;

@Repository
public interface EmpCustomRelationDao {
	/**
	 * 
	 * 功能描述：插入人员客户关系历史
	 * 
	 * @author 王湛智
	 * 
	 * @param empCustomRelation
	 * @throws SQLException
	 */
	public void addEmpCustomRelation(EmpCustomRelation empCustomRelation) throws SQLException;
	
	public int getTransferCustomCount(Customer customer);
	
	public List<EmpCustomRelation> getTransferCustom(Customer customer);
	
	public void delEmpCustomRelationByCustomIdAndEmpNo(String customId,String empNo,String productCode);
	
	/**
	 * 
	 * 功能描述：用销售ID和用户ID查询是否接收
	 * 
	 * @author 王湛智
	 * 
	 * @param customer
	 * @return
	 * @throws SQLException
	 */
	public Integer getAcceptCustomerCountByCusIdAndEmpno(Customer customer) throws SQLException;

	/**
	 * 修改客户销售关系
	 */
	public void updateEmpCustomRelation(EmpCustomRelation empCustomRelation);
	/**
	 * 
	 * 功能描述：处理调配修改人员客户关系
	 * 
	 * @author 王湛智
	 * 
	 * @param customer
	 * @throws SQLException
	 */
	public void updateEmpCustomRelationByMix(Customer customer) throws SQLException;
	/**
	 * 
	 * 功能描述：根据客户关系ID 删除客户关系表记录
	 * 
	 * @author 王湛智
	 * 
	 * @param ecrId
	 * @throws SQLException
	 */
	public void delByEcrId(String ecrId) throws SQLException;

	/**
	 * 通过主键ID获取客户销售关系记录
	 * @param id
	 * @return
	 */
	public EmpCustomRelation getEmpCustomRelationById(String id);
	/**
	 * 通过主键IDStr获取客户销售关系记录
	 * @param id
	 * @return
	 */
	public List<EmpCustomRelation> getEmpCustomRelationByIdStr(String idStr);

	/**
	 * 通过主键ID修改客户销售关系记录
	 * @param id
	 * @return
	 */
	public void updateEmpCustomRelationById(EmpCustomRelation empCustomRelation);
	/**
	 * 根据EmpId customId获取EmpCustomRelation
	 * @param empId
	 * @param customId
	 * @return
	 */
	public List<EmpCustomRelation> getEmpCustomRelationByEmpIdAndCustomId(String empId,String customId);
	
	/**
	 * 根据客户ID获取 员工客户关系
	 * @param customId
	 * @return
	 */
	public List<EmpCustomRelation>  getEmpCustomRelationByCustomId(String customId);
	/**
	 * 
	 *
	 * 功能描述：修改客户关系表客户ID
	 * 
	 * @author 湛智
	 *
	 * @throws 2014年6月13日
	 *
	 */
	public void updateEmpCustomRelationCusId(Customer customer) throws SQLException;

	/**
	 * 通过条件获取客户销售关系
	 * @param empCustomRelation
	 * @return
	 */
	public EmpCustomRelation getEmpCustomRelationByCondition(
			EmpCustomRelation empCustomRelation);
	
	public List<EmpCustomRelation> getEmpCustomRelationListByCondition(
			EmpCustomRelation empCustomRelation);
	
	/**
	 * 
	 *
	 * 功能描述：用员工id和产品code查询 客户关系表记录
	 * 
	 * @author 湛智
	 *
	 * @throws 2014年6月26日
	 *
	 */
	public List<EmpCustomRelation> getEmpCustomRelationByCusIdAndProductCode(Customer customer);
	
	public List<EmpCustomRelation> getEmpCustomRelationByCusId(Customer customer);
	
	/**
	 * 获取客户的已购商品
	 * @param empCustomRelation
	 * @return
	 */
	public List<String> getBuyProduct(EmpCustomRelation empCustomRelation);
	
	public void updateServiceDate(EmpCustomRelation empCustomRelation);

	public List<EmpCustomRelation> getUnReceiveCustom();
	/**
	 * 
	 *
	 * 功能描述：关系表ID修改关系表
	 * 
	 * @author 湛智
	 *
	 * @throws 2014年7月2日
	 *
	 */
	public void updateEmpCustomRelationByEcrId(EmpCustomRelation empCustomRelation);
	/**
	 * 
	 *
	 * 功能描述：根据推送历史ID获取关系表记录
	 * 
	 * @author 湛智
	 *
	 * @throws 2014年8月6日
	 *
	 */
	public EmpCustomRelation getEcrByPushHistIdAndPusherId(CustomStateHist csh);
	/**
	 * 
	 *
	 * 功能描述：根据客户ID删除关系表中的记录
	 * 
	 * @author 湛智
	 *
	 * @throws 2014年9月22日
	 *
	 */
	public void delEmpCustomRelationByCusId(String cusId);
	/**
	 * 
	 *
	 * 功能描述：用员工id和产品code查询 和客户类型 客户关系表记录
	 * 
	 * @author 湛智
	 *
	 * @throws 2014年10月20日
	 *
	 */
	public List<EmpCustomRelation> getEmpCustomRelationByCusIdAndProductCodeAndCustomType(Customer customer);
}
